ANSI.SYS
DOS에서 프롬프트 화면은 텍스트를 기반으로 사용된다. 그러나, 프롬프트의 문자색이나 배경색을 지정하거나 키의 기능을 제어하기 위해 특별한 제어기가 필요하다. 이처럼 프롬프트에서 화면의 모양이나 키의 기능을 제어하기 위해 사용하는 제어기로 ANSI.SYS를 제공하고 있는데, Config.sys 파일 안에서 Device 명령어에 의하여 지정되어야 한다.
ANSI.SYS는 화면과 키보드를 제어하는 이스케이프 시퀀서의 ANSI 터미널 에뮬레이터를 지원하는데, ANSI 이스케이프 시퀀서는 ASCII 문자의 연속으로, 처음 2개 문자는 이스케이프 문자(1Bh)와 왼쪽 괄호문자(5Bh)이다. ANSI에서 사용되는 이스케이프 문자와 왼쪽 괄호문자 뒤에 나오는 문자는 키보드와 화면의 기능을 제어하는 영문 및 숫자 코드가 나오도록 지정되어 있는데, 대문자와 소문자를 확실히 구별하여 사용해야 한다. 즉, 대문자 A와 소문자 a는 완전히 다른 의미로 사용된다.
ANSI 제어기를 설치한 경우 화면 모양이나 키를 제어하기 위해 Prompt 명령어를 사용한다. 즉, 화면에 나타날 글자색이나 배경색 혹은 커서의 위치를 변경하려면 배치 프로그램이나 명령어 프롬프트 상에서 Prompt 명령어를 사용해야 한다.
■ 명령어 위치
윈도우가 설치되어 있는 하드디스크(C:\Windows\Command)에 있는 제어기 파일
■ 사용법
DEVICE = [drive:][path]ANSI.SYS [/X] [/K] [/R]
■ 옵션 및 매개변수

[drive:][path] | ANSI.SYS 파일이 있는 경로를 지정한다.
/x | 101 키보드의 확장키를 독립적으로 재배치할 때 사용된다.
/k | 이 옵션은 101 키보드를 84 키보드처럼 사용할 수 있도록 설정하기 위해 사용하는 것으로 SWITCHES=/K와 같은 효과가 있다. 만약, SWITCHES=/K 명령을 사용한다면 ANSI.SYS에서 /K 옵션을 지정해야 한다.
/r | 이 옵션은 화면에서 프로그램을 읽을 때 ANSI.SYS가 줄의 이동을 조절하도록 하기 위해 사용한다.

■ 참고 사항
☞ ANSI 이스케이프 시퀀서에서 사용되는 매개변수

Pn | 수치 매개변수와 십진수를 지정한다.
Ps | 선택 매개변수로 어떤 기능을 선택할 때 사용하는 십진수를 지정하기 위해 사용한다. 만약, 다수의 매개변수를 지정하고자 한다면 매개변수 사이에 세미콜론(;)을 분리문자로 사용한다.
PL | 라인 매개변수로 화면이나 다른 장치에 라인 번호를 십진수로 지정하기 위해 사용한다.
Pc | 칼럼 매개변수로 화면이나 다른 장치의 칼럼 번호를 십진수로 지정하기 위해 사용한다.

☞ 커서 이동, 그래픽, 키 지정을 위한 ANSI 이스케이프 시퀀서
다음에 설명하는 ANSI 이스케이프 시퀀서 목록에서 ESC는 ASCII의 이스케이프 문자 27(1Bh)을 나타내는데, 이것은 모든 이스케이프 시퀀서의 시작을 시스템에 알려주는 역할을 담당한다.
만약, Prompt 명령어에서 이스케이프 시퀀서를 나타내고자 한다면 ESC 대신에 $e를 사용한다. 즉, ESC[PL;PcH는 Prompt 명령에서는 $e[PL;PcH로 표시해야 한다.

ESC[PL;PcH | [커서의 위치 이동] 커서 위치를 나타내는 이스케이프 시퀀서로 커서를 지정된 위치(좌표)로 이동시키기 위해 사용한다. 좌표를 지정하지 않으면 커서는 화면의 왼쪽 위로 이동된다. 커서의 위치를 나타내기 위한 이스케이프 시퀀서로 "H" 대신에 "f"를 사용할 수 있다. 즉, "ESC[PL;PcH"는 "ESC[PL;Pcf"와 같은 의미로 사용된다.
ESC[PnA | [커서를 위로 이동] 칼럼은 현 상태를 유지하고 n으로 지정한 라인 수만큼 커서를 위로 이동시키기 위해 사용한다. 만약, 커서가 맨 윗줄에 위치하고 있다면 이 명령어는 유효하지 않다.
ESC[PnB | [커서를 아래로 이동] 칼럼은 현 상태를 유지하고 n으로 지정한 라인 수만큼 커서를 아래로 이동시키기 위해 사용한다. 만약, 커서가 맨 아래 줄에 위치하고 있다면 이 명령어는 유효하지 않다.
ESC[PnC | [커서를 앞으로 이동] 라인은 현 상태를 유지하고 n으로 지정한 만큼 커서를 앞으로 이동시킨다. 만약, 커서가 맨 왼쪽에 위치하고 있다면 이 명령어는 유효하지 않다.
ESC[PnD | [커서를 뒤로 이동] 라인은 현 상태를 유지하고 n으로 지정한 만큼 커서를 뒤로 이동시킨다. 만약, 커서가 맨 오른쪽에 위치하고 있다면 이 명령어는 유효하지 않다.
ESC[s | [커서 위치 저장] 현재의 커서 위치를 템플리트에 저장하기 위해 사용한다. 이 명령어에 의하여 저장된 커서의 위치는 커서 위치를 복원하는 명령어에 의하여 저장된 위치로 커서를 옮길 수 있다.
ESC[u | [커서 위치 복원] 커서 위치 저장 명령어에 의해 저장된 커서의 위치로 커서를 이동한다.
ESC[2J | [화면 삭제] 현재의 화면을 삭제하고 커서를 화면의 왼쪽 위(home 위치)로 이동한다. 이 명령어는 Cls 명령어와 같은 것이다.
ESC[K | [라인 삭제] 커서의 현 위치에서 커서가 위치한 곳의 문자도 포함하여 라인 끝까지의 모든 문자를 삭제한다.
ESC[Ps;...;Psm | [그래픽 모드 설정] 이 명령어는 화면에 나타낼 문자의 속성, 문자 색, 배경색을 지정하기 위해 텍스트 모드에서 그래픽 모드로 변경하기 위해 사용하는 것으로 사용하는 것으로, 다음에 설명하는 s에 따라 속성이 달라진다. 지정된 속성은 다른 이스케이프 시퀀서의 속성이 지정될 때까지 유효하다. 문자색과 바탕색의 매개변수(30∼47)는 ISO 6429의 표준을 따른다. 텍스트의 속성 | 문자색 | 바탕색
0 | 모든 속성 해제 | 30 | 검정 | 40 | 검정
1 | 강조 | 31 | 빨강 | 41 | 빨강
4 | 밑줄 (흑백 모니터) | 32 | 녹색 | 42 | 녹색
5 | 깜박임 | 33 | 노랑 | 43 | 노랑
7 | 반전 비디오 지정 | 34 | 파랑 | 44 | 파랑
8 | 숨김 | 35 | 보라 | 45 | 보라
|  | 36 | 청록 | 46 | 청록
|  | 37 | 흰색 | 47 | 흰색
ESC[=psh | [모드 설정] 이 명령어는 화면의 폭을 지정하기 위해 사용하는 것으로 s에 지정할 수 있는 값과 화면의 종류는 다음과 같다. s 값 | 화면 종류
2 | 80×148×25, 흑백 화면, 텍스트 전용
3 | 80×148×25, 컬러 화면, 텍스트 전용
6 | 640×148×200, 흑백 화면, 그래픽
14 | 640×148×200, 컬러 화면, 16색 컬러 그래픽
17 | 640×148×480, 흑백 화면, 2색 컬러 그래픽
18 | 640×148×480, 컬러 화면, 16색 컬러 그래픽
ESC[=Psl | [모드 재설정] 화면의 폭과 종류를 재설정하기 위해 사용하는 명령어로 반전을 나타내는 7을 제외하고 모드 설정에서와 같은 값을 사용한다. 이 명령어에서 마지막 문자는 영어 소문자 엘(l)이다.
ESC[code;string;...p | [키보드 설정 문자열] 키보드의 키를 지정된 문자열로 재정의하기 위해 사용하는 명령어로 code값과 string값은 다음의 예에서와 같이 사용된다. 그러나, 모든 컴퓨터에 적용되는 것은 아니다. 따라서 같은 code값과 string값을 사용하는 지의 여부는 컴퓨터의 사용 설명서를 참조하기 바란다. 또한, ANSI.SYS에 대한 Device 명령에 /X 옵션을 지정하지 않으면 괄호안의 코드 중 일부는 처리되지 않는다. 문자열은 어떤 문자에 대한 아스키 코드이거나 인용부호가 있는 문자열을 의미한다. 예를 들어, 아스키 코드 65와 인용 부호가 있는 "A"는 모두 대문자 A를 나타낸다. 키 | 코드 | <Shift>+코드 | <Ctrl>+코드 | <Alt>+코드
<F1> <F2> <F3> <F4> <F5> <F6> <F7> <F8> <F9> <F10> <F11> <F12> </> (숫자판) <*> (숫자판) <-> (숫자판) <Home> (숫자판) <↑> (숫자판) <PgUp> (숫자판) <←> (숫자판) <5> (숫자판) <→> (숫자판) <End> (숫자판) <↓> (숫자판) <PgDn> (숫자판) <Ins> (숫자판) <Del> (숫자판) <+> (숫자판) <Enter> (숫자판) <Ins> <Home> <PgUp> <Del> <End> <PgDn> <↑> <←> <→> <↓> <PrtSc> <Pause/Break> <BS> <Enter> <Tab> <NULL> <A> <B> <C> <D> <E> <F> <G> <H> <I> <J> <K> <L> <M> <N> <O> <P> <Q> <R> <S> <T> <U> <V> <W> <X> <Y> <Z> <1> <2> <3> <4> <5> <6> <7> <8> <9> <0> <-> <=> <[> <]> < > (스페이스) <;> <'> <,> <.> </> <`> | 0;59 0;60 0;61 0;62 0;63 0;64 0;65 0;66 0;67 0;68 0;133 0;134 47 42 45 0;71 0;72 0;73 0;75 (0;76) 0;77 49 0;80 0;81 0;82 46 43 13 (224;82) (224;71) (224;73) (224;83) (224;79) (224;81) (224;72) (224;75) (224;77) (224;80) 0;114 0;0 8 13 9 0;3 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 49 50 51 52 53 54 55 56 57 48 45 61 91 93 92 59 39 44 46 47 96 | 0;84 0;85 0;86 0;87 0;88 0;89 0;90 0;91 0;92 0;93 0;135 0;136 47 (0;144) 45 55 56 57 52 53 54 50 51 48 (0;147) 43 (224;82) (224;71) (224;73) (224;147) (224;79) (224;81) (224;72) (224;75) (224;77) (224;80) 8 0;15 65 66 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 33 64 35 36 37 94 38 42 40 41 95 43 123 125 124 58 34 60 62 63 126
| 0;94 0;95 0;96 0;97 0;98 0;99 0;100 0;101 0;102 0;103 0;137 0;138 (0;142) (0;78) (0;149) 0;119 (0;141) 0;132 0;115 (0;143) 0;116 0;117 (0;145) 0;118 (0;146) (0;150) 10 (224;146) (224;119) (224;132) (224;163) (224;117) (224;118) (224;141) (224;115) (224;116) (224;145) 127 10 (0;148) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 0 30 31 - 27 29 28 | 0;104 0;105 0;106 0;107 0;108 0;109 0;110 0;111 0;112 0;113 0;139 0;140 (0;74) (0;164) (0;55) (0;166) (224;162) (224;151) (224;153) (224;159) (224;161) (224;152) (224;155) (224;157) (224;154) (0) (0) (0;165) 0;30 0;48 0;46 0;32 0;18 0;33 0;34 0;35 0;23 0;36 0;37 0;38 0;50 0;49 0;24 0;25 0;16 0;19 0;31 0;20 0;22 0;47 0;17 0;45 0;21 0;44 0;120 0;121 0;122 0;123 0;124 0;125 0;126 0;126 0;127 0;129 0;130 0;131 0;26 0;27 0;43 0;39 0;40 0;51 0;52 0;53 (0;41)

☞ 확장키의 재배치
사용 중인 키보드가 101키 혹은 103키라고 한다면 확장키를 재배치하기 위해 /X 옵션을 사용한다.
예를 들어, 커서 이동을 위한 키와 입력 모드를 변경하기 위한 <Ins>, 삭제를 위한 <Del> 키 등은 숫자판과 제어키 구역에 각각 하나씩 모두 2개가 있는데 /X 옵션을 사용하지 않는다면 숫자판의 키는 DOS에서처럼 사용된다.
☞ 확장키의 무시
만약 응용 프로그램이 확장된 키보드에서 데이터를 입력받도록 설계된 경우가 아니라면 ANSI.SYS에서 /K 옵션을 사용한다. 이 옵션을 사용하면 확장 키보드가 기본 키보드와 같게 사용된다.
☞ /X 스위치와 /K 스위치를 모두 사용
/X와 /K 옵션을 동시에 설정할 수는 없다.
☞ 프롬프트에서 ANSI.SYS 사용하기
명령어 프롬프트 상에서 프롬프트 상태를 나타내기 위해 Prompt 명령어를 사용할 때 ESC 대신 $e를 사용해야 한다. Prompt 명령어 라인에서 $e는 이스케이프 시퀀서의 시작을 의미한다. 이 경우 반드시 ANSI.SYS 제어기가 설치되어야만 한다. 만약, 설치되지 않은 경우에는 지정된 이스케이프 시퀀서는 문자열로 간주된다.
■ 사용 예
경로를 나타내는 \와 와일드 카드인 ?를 문자열로 사용하려면 다음과 같이 이스케이프 시퀀서 명령어를 사용한다.
ESC["\";"?"pESC["?";"\"p
\와 ?가 ASCII 값으로 쓰이도록 하려면 다음과 같이 이스케이프 시퀀서 명령어를 사용한다.
ESC[92;63pESC[63;92p
\와 ?가 원래의 의미대로 복원되도록 설정하려면 다음과 같이 이스케이프 시퀀서 명령어를 사용한다.
ESC[92;92pESC[63;63p
키보드 상에서 <F12>를 눌렀을 때 현행 디렉토리의 목록이 화면에 나타나도록 설정하려면 다음과 같이 Prompt 명령어를 사용한다.
prompt $e[0;134;"dir";13p
배경색을 청록색으로 하고 문자의 특성을 굵은 검정색 문자로 지정하려면 다음과 같이 Prompt 명령어를 사용한다.
prompt $e[1;30;46m$p$g